package org.example.search;

import java.util.Arrays;

public class BinarySearch {
    public static void main(String[] args) {
        int[] array = {10, 20, 30, 40, 50}; // Пример массива для поиска
        int target = 30; // Значение, которое нужно найти

        int result = binarySearch(array, target);
        System.out.println("Результат бинарного поиска: " + (result != -1 ? "Значение найдено" : "Значение не найдено"));
    }

    /**
     * Реализация бинарного поиска.
     * @param array Массив для поиска.
     * @param target Значение, которое нужно найти.
     * @return Индекс найденного значения в массиве или -1, если значение не найдено.
     */
    public static int binarySearch(int[] array, int target) {
        int low = 0;
        int high = array.length - 1;

        while (low <= high) {
            int mid = low + (high - low) / 2;
            int midVal = array[mid];

            if (midVal < target)
                low = mid + 1;
            else if (midVal > target)
                high = mid - 1;
            else
                return mid; // Значение найдено
        }
        return -1; // Значение не найдено
    }
}